#ifndef vtkYorunge3BModel_h__
#define vtkYorunge3BModel_h__

#include "vtkYorunge.h"
#include "TelefonModeli.h"

// VTK
#include <vtkActorCollection.h>
#include <vtkProperty.h>

/** 
 * \class vtkYorunge3BModel
 * \ingroup Gosterim
 * \brief Bir 3B yorunge icin gerekli olan VTK data yapilarini birlestiren siniftir.
 * \author Mehmet Yigitsoy
 * \date $Date: 2013/01/03 11:23:00 $
 */
class vtkYorunge3BModel : public vtkYorunge
{
public:
	/**
	 * \brief 
	 * \returns 
	 **/
	vtkYorunge3BModel(YorungeId id);

	/**
	 * \brief 
	 * \returns 
	 **/
	~vtkYorunge3BModel();

	/**
	 * \brief Yeni bir posisyon eklemek icin kullanilir.
	 * \param pozisyon
	 * \returns void
	 **/
	virtual void pozisyonEkle(const Pozisyon& pozisyon);

protected:
	/**
	 * \brief vtk pipeline'in guncellenmesi icin cagrilasi gereken method. Yeni bir pozisyon eklendiginde cagirilir.
	 * \returns void
	 **/
	void guncelle();

private:
	std::vector<std::shared_ptr<TelefonModeli>>				m_modelList;	///< Telefon model objelerini tutacak konteynir.
};

typedef vtkYorunge3BModel* VtkYorunge3BModelPtr;

#endif // vtkYorunge3BModel_h__